package com.desksoft.ecommerce.service.interf.mall;

import java.util.List;
import java.util.Map;

import com.desksoft.ecommerce.entity.logistics.dto.Demandh;
import com.desksoft.ecommerce.entity.logistics.dto.DemandhKey;
import com.desksoft.ecommerce.entity.logistics.dto.Docuplist;
import com.desksoft.ecommerce.util.result.ServiceResult;
import com.desksoft.ecommerce.vo.logistics.PublicinfoVO;
import com.desksoft.ecommerce.vo.logistics.StoreVO;
import com.desksoft.ecommerce.vo.mall.DemandHVO;
import com.desksoft.ecommerce.vo.mall.DistLogVO;
import com.desksoft.ecommerce.vo.mall.DocuplistVO;
import com.desksoft.ecommerce.vo.mall.MallMessageVO;
import com.desksoft.ecommerce.vo.mall.OneClkVO;
import com.desksoft.ecommerce.vo.mall.PlaceOrderVO;
import com.desksoft.ecommerce.vo.mall.PublicInfoVO;
import com.desksoft.ecommerce.vo.mall.ReturnAppealVO;
import com.desksoft.ecommerce.vo.mall.SetupDemandVO;
import com.desksoft.ecommerce.vo.mall.VipCardExtVO;
import com.desksoft.ecommerce.vo.mall.ZoneVO;
import com.desksoft.utility.service.ServiceInterface;

/***************************************
 * <pre>
 * 版权所有：杭州迪科软件 保留所有权利
 * 创建日期: 2012-7-30
 * 创建作者：rq
 * 文件名称：IDemandService.java
 * 版本：1.0
 * 功能：
 * 最后修改时间：2012-7-30
 * 修改记录：
 * </pre>
 *****************************************/
public interface IDemandService extends ServiceInterface {   

	/**
	 * 获取送货方式信息集合
	 * 
	 * @param carriageVO
	 * @return
	 */
	public ServiceResult<List<Map<String, Object>>> getCarriageInfo(String sid,
			String areaNo);

	/**
	 * 保存配送方式信息集合
	 * 
	 * @param oneClkVO
	 * @return
	 */
	public ServiceResult<MallMessageVO> saveDeliverInfo(OneClkVO oneClkVO);

	/**
	 * 获取常用配送信息集合
	 * 
	 * @param oneClkVO
	 * @return
	 */
	public ServiceResult<OneClkVO> getDeliverInfo(String cardno);

	/**
	 * 修改客户的常用配送信息
	 * 
	 * @param oneClkVO
	 * @return
	 */
	public ServiceResult<MallMessageVO> updateDeliverInfo(OneClkVO oneClkVO);

	/**
	 * 确认索取的发票
	 * 
	 * @param oneClkVO
	 * @return
	 */
	public ServiceResult<MallMessageVO> saveBillInfo(OneClkVO oneClkVO);

	/**
	 * 下单结算
	 * 
	 * @param placeOrderVO
	 * @return
	 */
	public ServiceResult<Map<Integer, Object>> setPlaceOrderInfo(
			PlaceOrderVO placeOrderVO);
	
	/**
	 * 获取发票内容
	 * @return
	 */
	public ServiceResult<List<PublicInfoVO>> selPublicInfoBill();
	
	/**
	 * 获取发票抬头
	 * @param cardno
	 * @return
	 */
	public ServiceResult<String> getBilltitle(String cardno);
	
	/**
	 * 保存发票内容
	 * @param vipCardExtVO
	 * @return
	 */
	public ServiceResult<String> updateBilltitle(VipCardExtVO vipCardExtVO);
	
	/**
	 * 保存订单发票数据
	 * @param demandHVO
	 * @return
	 */
	public ServiceResult<String> updateDemandHBilltitle(DemandHVO demandHVO);
	
	/**
	 * 取消订单(未支付的情况)
	 * @param demandHVO
	 * @return
	 */
	public ServiceResult<Boolean> doNotPayCancelOrder(DemandHVO demandHVO);
	/**
	 * 取消订单(未支付的情况)(不处理可配数)
	 * @param demandHVO
	 * @return
	 */
	public ServiceResult<Boolean> doNotPayCancelOrder1(DemandHVO demandHVO);
	
	/**
	 * 获取取消订单的公共信息
	 * @param publicinfoVO
	 * @return
	 */
	public ServiceResult<List<PublicinfoVO>> selPublicInfoCancel(PublicinfoVO publicinfoVO);
	
	/**
	 * 操作订单以记录日志
	 * @param distLogVO
	 * @return
	 */
	public ServiceResult<String> insertOrderDistLog(DistLogVO distLogVO);
	
	/**
	 * 取消订单恢复预扣(适用于余额)
	 * @param demandHVO
	 * @return
	 */
	public ServiceResult<String> doCallDemandPayPre(DemandHVO demandHVO);
	
	/**
	 * 提交订单取消申请
	 * @param demandHVO
	 * @return
	 */
	public ServiceResult<String> doClientInform(DemandHVO demandHVO);
	
	/**
	 * 自动作废
	 * @param demandHVO
	 * @return
	 */
	public ServiceResult<String> doCallCancelDemand();
	
	
	/**
	 * 生成退货单据
	 * @param demandhVO
	 * @return
	 */
	public ServiceResult<String> insertAppealInfo(DemandHVO demandhVO);
	
	/**
	 * 获取退货原因
	 * @param publicinfoVO
	 * @return
	 */
	public ServiceResult<List<PublicinfoVO>> selectPublicInfoReturn(PublicinfoVO publicinfoVO);

	/**
	 * 退货列表
	 * @param appealVO
	 * @return
	 */
	public ServiceResult<List<ReturnAppealVO>> selectAppealInfo(ReturnAppealVO appealVO);
	
	/**
	 * 退货列表条数
	 * @param appealVO
	 * @return
	 */
	public ServiceResult<Long> getAppealTotal(ReturnAppealVO appealVO);
	
	/**
	 * 撤诉退货单
	 * @param appealVO
	 * @return
	 */
	public ServiceResult<String> updateAppealStatus(ReturnAppealVO appealVO);
	
	/**
	 * 退货确认时同时更新资料凭证表作为明细使用
	 * @return
	 */
	public ServiceResult<String> insertDocUpListInfo(List<DocuplistVO> ldocuplist);
	
	/**
	 * 查询退货凭证资料
	 * @param docuplistVO
	 * @return
	 */
	public ServiceResult<List<Docuplist>> selectDocUpListInfo(DocuplistVO docuplistVO);
	
	/**
	 * 查询退货详情
	 * @param appealVO
	 * @return
	 */
	public ServiceResult<List<ReturnAppealVO>> selectAppealDetail(ReturnAppealVO appealVO);
	
	/**
	 * 查询客户自提对应的门店信息
	 * @param storeVO
	 * @return
	 */
	public ServiceResult<List<StoreVO>> seletByStoreZone(StoreVO storeVO);
	
	/**
	 * 获取配送地区编码
	 * @param zoneVO
	 * @return
	 */
	public ServiceResult<List<ZoneVO>> getStoreZoneCode(ZoneVO zoneVO);
	
	
	/**
	 * 更新配送时间
	 * @param demandhDTO
	 * @return
	 */
	public ServiceResult<String> updateDemandHNeedDate(Demandh demandhDTO);
	
	/**
	 * 当前登录用户的订单信息
	 * @param 
	 * @return
	 */
	public ServiceResult<DemandHVO> selectMyDemandHOrderInfo( String clientcode );
	
	/**
	 * 生成订单
	 * 
	 * @param placeOrderVO
	 * @return
	 */
	public ServiceResult<Map<Integer, Object>> selectPlaceOrderInfo(
			SetupDemandVO setupDemandVO);
	
	/**
	 * 获取订单信息
	 * 
	 * @param placeOrderVO
	 * @return
	 */
	public ServiceResult<DemandHVO> selectMyDemandHKey(DemandhKey demandhKey);
}
